<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script>
        /**
         * 给你一个整数 x ，如果 x 是一个回文整数，返回 true ；否则，返回 false 。
         * 回文数是指正序（从左向右）和倒序（从右向左）读都是一样的整数。例如，121 是回文，而 123 不是。
        */

        // 思路1 反转参数
        function isPalindrome1 (num) { // 12345
            if (num < 0) {
                return false;
            }
            const numStr = String(num);
            const reversedNum = Number(numStr.split('').reverse().join(''));
            if (reversedNum === num) {
                return true;
            }
            return false;
        }


        // 思路2 造新数 比较新数和参数是否相同
        function isPalindrome2 (num) { 
            if (num < 0) {
                return false;
            }
            if (num < 10) {
                return true;
            }
            if (num % 10 === 0) {
                return false;
            }

            // 1234
            const originNum = num;
            let newNum = 0; // 430 + 2

            while (num > 0) {
                const tmp =  num % 10; // 个位数 4
                newNum = newNum * 10 + tmp; // 把newNum乘10 + 新的个位数
                num = ( num - tmp ) / 10; // 去掉num的最后一位
            }
            return newNum === originNum;
        }

        // 测试两种方法的性能
        console.time('字符串方法');
        for (let i = 0; i < 1000000; i++) {
            const n = Math.floor(Math.random());
            isPalindrome1(n);
        }
        console.timeEnd('字符串方法');

        console.time('数学方法');
        for (let i = 0; i < 1000000; i++) {
            const n = Math.floor(Math.random());
            isPalindrome2(n);
        }
        console.timeEnd('数学方法');

    </script>
</body>
</html>